Add barrier instructions DMB, DSB, ISB #38
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
These instructions (A6.7.21-24 in ARMv6-M reference and A7.7.32-36 in ARMv7-M reference) allow explicit instruction and memory synchronisation. They're necessary for dealing with caches in Cortex-M7 parts and for various DMA operations on other parts.
Since they exist in both ARMv6-M and ARMv7-M I've added them as
#[cfg(target_arch="arm")]
but maybe there's a better cfg flag?The argument
0xF
is the only permitted encoding. They are all marked volatile and as clobbering memory in the CMSIS C implementation.